Ext.define('FSelection', {
    extend: 'Ext.form.field.ComboBox',
    alias: 'widget.fselection',
    mode: 'local',
    triggerAction: 'all',
    forceSelection: true,
    //typeAhead: true,
    emptyText: ' - - -  Select  - - - ',
    submitValue: true,
    storeUrl: 'src/php/handler.php',
    autoLoadStore: true,
    
    /**
     * table: Nome da tabela que irá prover os dados para o campo.
     */
    table: null,
    
    /*
     * className: Nome da classe que irá prover os dados para o campo.
     */
    className: 'FDefaultModel',
    
    /*
     * storeParam: informa a ação que a classe deverá tomar para retornar os dados.
     */
    storeParam: 'list',
    
    /*
     * valueId: Deve ser informado o nome do identificador dos valores dos itens do campo. Default '0'.
     */
    valueField: '0',
    
    /*
     * displayField: Nome do identificador dos dados informativos do campo. Default '1'.
     */
    displayField: '1',
    listeners:
    {
        expand: function()
        {
            this.store.reload();
        }
    },
    initComponent: function()
    {
        this.fieldCls = 'ftextfield';
        this.labelCls = 'ftextfieldlabel';
        
        this.store = Ext.create('Ext.data.JsonStore',
        {
            proxy: {
                type: 'ajax',
                url: this.storeUrl,
                actionMethods: 'POST',
                reader: {
                    type: 'json',
                    root: 'data'
                }
            },
            fields: this.storeFields,
            autoLoad: false
        });
        
        
        
        this.fieldLabel = this.label ? this.label : this.fieldLabel;
        this.editable = false;
        
        this.callParent();
    },
    afterRender: function()
    {
        if ( this.autoLoadStore )
        {
            this.store.getProxy().extraParams.manager = this.className;
            this.store.getProxy().extraParams.action = this.storeParam;
            this.store.getProxy().extraParams.table = this.table;
            this.store.getProxy().extraParams.limit = null;
            this.store.load();
        }
    }
});